Machine Learning Model Deployment এর উদাহরণ গাইড ও নোট

358

Model Deployment হল মেশিন লার্নিং মডেলটি প্রডাকশনে নিয়ে আসা, যাতে এটি রিয়েল-টাইম ডেটাতে বা API-এর মাধ্যমে ব্যবহার করা যেতে পারে। মডেল ডিপ্লয়মেন্টের পর, আপনার মডেলটি অন্যান্য অ্যাপ্লিকেশন বা সিস্টেমে ইন্টিগ্রেটেড হয়ে কাজ করতে পারে।

এখানে, আমরা MXNet ব্যবহার করে একটি সিম্পল Image Classification মডেল তৈরি করব এবং তার পরে সেটিকে Flask অ্যাপ্লিকেশনে ডিপ্লয় করব, যাতে ব্যবহারকারীরা একটি ওয়েব ইন্টারফেসের মাধ্যমে মডেলটি ব্যবহার করতে পারে।


ধাপ ১: মডেল তৈরি এবং ট্রেনিং

ধরা যাক, আমরা Cats vs Dogs ইমেজ ক্লাসিফিকেশন প্রজেক্টের জন্য একটি pre-trained ResNet-50 মডেল ব্যবহার করে ট্রেনিং করেছি। মডেলটি MXNet ব্যবহার করে ট্রেনিং করা হয়েছে।

import mxnet as mx
from mxnet.gluon import model_zoo, nn
from mxnet.gluon.data.vision import datasets, transforms
from mxnet.gluon.data import DataLoader

# Pre-trained model লোড করা
net = model_zoo.vision.resnet50_v2(pretrained=True)

# আউটপুট লেয়ার পরিবর্তন করা (Cats vs Dogs জন্য)
net.output = nn.Dense(2)

# মডেল ইনিশিয়ালাইজ করা
net.initialize(mx.init.Xavier(), ctx=mx.cpu())

# প্রশিক্ষণ কোড (যেমন আগের উদাহরণে দেওয়া হয়েছে)
# ...

# মডেল সংরক্ষণ করা
net.save_parameters('cats_vs_dogs_model.params')

এখানে, আমরা ResNet-50 মডেল ব্যবহার করেছি এবং output layer-টি পরিবর্তন করেছি যাতে এটি ২টি শ্রেণি (Cats, Dogs) চিহ্নিত করতে পারে।


ধাপ ২: Flask অ্যাপ্লিকেশন তৈরি

এখন আমরা Flask ব্যবহার করে একটি ওয়েব অ্যাপ্লিকেশন তৈরি করব, যেখানে ব্যবহারকারী ইমেজ আপলোড করে মডেলের মাধ্যমে ক্লাসিফিকেশন ফলাফল দেখতে পারবে।

2.1 Flask ইনস্টলেশন

pip install flask
pip install mxnet
pip install pillow

2.2 Flask অ্যাপ্লিকেশন তৈরি করা

app.py ফাইলে Flask অ্যাপ্লিকেশন তৈরি করা হবে:

from flask import Flask, request, render_template
import mxnet as mx
from mxnet.gluon import nn
from mxnet import nd
from PIL import Image
import numpy as np
import io

# Flask অ্যাপ্লিকেশন তৈরি
app = Flask(__name__)

# মডেল লোড করা
net = nn.HybridBlock()
net.load_parameters('cats_vs_dogs_model.params', ctx=mx.cpu())
net.hybridize()

# ইনপুট ইমেজ প্রি-প্রসেসিং ফাংশন
def preprocess_image(image):
    # ইমেজ রিসাইজ এবং টেনসরে রূপান্তর
    transform = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    ])
    return transform(image).expand_dims(axis=0)

# ক্লাসিফিকেশন ফাংশন
def classify_image(image):
    # ইমেজ প্রি-প্রসেসিং
    image = preprocess_image(image)
    # ক্লাসিফিকেশন
    output = net(image)
    # আউটপুট প্রেডিকশন
    prediction = nd.argmax(output, axis=1)
    return prediction.asscalar()

# হোম পেজ
@app.route('/')
def index():
    return render_template('index.html')

# ইমেজ আপলোড ফাংশন
@app.route('/predict', methods=['POST'])
def predict():
    # ইমেজ আপলোড করা
    if 'file' not in request.files:
        return 'No file uploaded', 400

    file = request.files['file']
    if file.filename == '':
        return 'No selected file', 400

    # PIL ইমেজে রূপান্তর
    img = Image.open(file.stream)
    
    # ক্লাসিফিকেশন
    result = classify_image(img)
    
    # ফলাফল দেখানো
    if result == 0:
        return 'Prediction: Cat'
    else:
        return 'Prediction: Dog'

if __name__ == '__main__':
    app.run(debug=True)

ব্যাখ্যা:

  • Flask অ্যাপ্লিকেশন তৈরি করা হয়েছে যেখানে / রুটটি হোম পেজ এবং /predict রুটটি ইমেজ ক্লাসিফিকেশন এর জন্য।
  • ইমেজ আপলোড করার পরে, সেটি preprocess_image() ফাংশন দিয়ে প্রি-প্রসেস করা হয়, এবং মডেল ব্যবহার করে ক্লাসিফিকেশন করা হয়।
  • ফলস্বরূপ, মডেলটি ইমেজটি Cat অথবা Dog হিসাবে চিহ্নিত করবে।

ধাপ ৩: HTML ফর্ম তৈরি করা

index.html ফাইল তৈরি করা হবে, যেখানে ব্যবহারকারীরা ছবি আপলোড করতে পারবেন।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cat vs Dog Classifier</title>
</head>
<body>
    <h1>Upload an image of a cat or a dog</h1>
    <form action="/predict" method="post" enctype="multipart/form-data">
        <input type="file" name="file" accept="image/*" required>
        <button type="submit">Predict</button>
    </form>
</body>
</html>

এখানে:

  • ব্যবহারকারী ছবি আপলোড করতে পারবেন এবং predict বাটনে ক্লিক করলে, সেই ছবি মডেলটির মাধ্যমে ক্লাসিফাই হবে এবং ফলাফল পেজে দেখানো হবে।

ধাপ ৪: Flask অ্যাপ্লিকেশন চালানো

এখন, Flask অ্যাপ্লিকেশনটি চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:

python app.py

এটি একটি ওয়েব সার্ভার চালু করবে যা আপনার লোকালহোস্টে http://127.0.0.1:5000/ এ অ্যাক্সেস করা যাবে।


সারাংশ

এখানে আমরা MXNet মডেলটি Flask অ্যাপ্লিকেশনের মাধ্যমে ডিপ্লয় করেছি। এই প্রক্রিয়ায়:

  1. pre-trained ResNet-50 মডেলটি ব্যবহার করে Cats vs Dogs ডেটাসেটের উপর ক্লাসিফিকেশন করা হয়েছে।
  2. Flask ওয়েব সার্ভার তৈরি করে, আমরা file upload ফিচার তৈরি করেছি যেখানে ব্যবহারকারী ইমেজ আপলোড করে মডেলটির মাধ্যমে ক্লাসিফিকেশন দেখতে পারে।

এই মডেল ডিপ্লয়মেন্ট প্রক্রিয়া সাধারণত ওয়েব অ্যাপ্লিকেশন বা API ডিপ্লয়মেন্টে ব্যবহৃত হয়, যেখানে আপনি আপনার মডেলটি সহজে অন্যদের ব্যবহারের জন্য ইন্টারফেস তৈরি করেন।

Content added By
Promotion

Are you sure to start over?

Loading...